package com.eastfair.venuebooking.api;

import com.eastfair.boot.request.PageParams;
import com.eastfair.core.base.R;
import com.eastfair.venueservice.dto.ServiceItemDTO;
import com.eastfair.venueservice.dto.ServiceItemQuery;
import com.eastfair.venueservice.vo.ServiceItemVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 服务项Feign
 * @author linan
 */
@FeignClient(value = "venue-services-manage/serviceItem")
public interface ServiceItemFeign {

    /**
     * 添加服务项
     *
     * @param serviceItemDTO serviceItemDTO
     * @return the r
     */
    @PostMapping("/addServiceItem")
    R<Boolean> addServiceItem(@RequestBody ServiceItemDTO serviceItemDTO);

    /**
     * 修改服务项
     *
     * @param serviceItemDTO serviceItemDTO
     * @return the r
     */
    @PostMapping("/updateServiceItem")
    R<Boolean> updateServiceItem(@RequestBody ServiceItemDTO serviceItemDTO);

    /**
     * 服务上架
     *
     * @param serviceItemDTO serviceItemDTO
     * @return the r
     */
    @PostMapping("/shelfService")
    R<Boolean> shelfService(@RequestBody ServiceItemDTO serviceItemDTO);

    /**
     * 服务下架
     *
     * @param serviceItemDTO serviceItemDTO
     * @return the r
     */
    @PostMapping("/offShelfService")
    R<Boolean> offShelfService(@RequestBody ServiceItemDTO serviceItemDTO);

    /**
     * 删除服务
     *
     * @param serviceItemDTO serviceItemDTO
     * @return the r
     */
    @PostMapping("/delServiceItem")
    R<Boolean> delServiceItem(@RequestBody ServiceItemDTO serviceItemDTO);

    /**
     * 服务项列表
     *
     * @param serviceItemQuery serviceItemQuery
     * @return the r
     */
    @PostMapping("/queryServiceItem")
    R<?> queryServiceItem(@RequestBody PageParams<ServiceItemQuery> serviceItemQuery);

    /**
     * 简单查询服务项列表（不分页）
     *
     * @param serviceItemQuery serviceItemQuery
     * @return the r
     */
    @PostMapping("/queryServiceItemSimpleList")
    R<?> queryServiceItemSimpleList(@RequestBody ServiceItemQuery serviceItemQuery);

    /**
     * 同步服务
     *
     * @param serviceItemDTO 同步服务
     * @return R
     */
    @ApiOperation(value = "同步服务", notes = "同步服务")
    @PostMapping("/syncServiceItem")
    R<Boolean> syncServiceItem(@RequestBody ServiceItemDTO serviceItemDTO);



    /**
     * 主运准备预订服务的服务列表
     *
     * @param serviceItemQuery 主运准备预订服务的服务列表
     * @return R
     */
    @ApiOperation(value = "主运准备预订服务的服务列表", notes = "主运准备预订服务的服务列表")
    @PostMapping("/queryServiceItemOfTransport")
    R<List<ServiceItemVO>> queryServiceItemOfTransport(@RequestBody ServiceItemQuery serviceItemQuery);
}
